package com.relytosoft.mizar.analyze.face.services.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.relytosoft.dubhe.common.core.base.page.PageQuery;
import com.relytosoft.mizar.analyze.base.entity.pojo.dto.TaskRequestDto;
import com.relytosoft.mizar.analyze.face.api.entity.AyFaceTaskSon;
import com.relytosoft.mizar.analyze.face.api.pojo.dto.AyTaskIdDto;
import com.relytosoft.mizar.analyze.face.api.pojo.query.AyFaceTaskSonQuery;

import java.util.List;

/**
 * @author lj
 * @date 2022/5/16 11:41
 */
public interface AyFaceTaskSonService extends IService<AyFaceTaskSon> {

    /**
     * 分页查询
     *
     * @param pageQuery
     * @param ayFaceTaskSonQuery
     * @return
     */
    IPage<AyFaceTaskSon> selectAyFaceTaskSonPageList(PageQuery pageQuery, AyFaceTaskSonQuery ayFaceTaskSonQuery);

    /**
     * 添加结构化子任务/添加通道
     *
     * @param
     */
    boolean insertAyFaceTaskSon(AyFaceTaskSon ayFaceTaskSon);

    /**
     * 修改结构化子任务状态
     */
    boolean updateAyFaceTaskSon(AyTaskIdDto ayTaskIdDto);

    /**
     * 启动结构化子任务
     */
    boolean startAyFaceTaskSon(AyTaskIdDto ayTaskIdDto, AyFaceTaskSon ayFaceTaskSon);

    /**
     * 停止结构化子任务
     */
    boolean stopAyFaceTaskSon(AyTaskIdDto ayTaskIdDto, AyFaceTaskSon ayFaceTaskSon);

    /**
     * 创建kafka消息对象
     */
    TaskRequestDto createRequest(AyFaceTaskSon ayFaceTaskSon);

    /**
     * 创建结构化子任务对象
     */
    AyFaceTaskSon createTaskSon(AyFaceTaskSon ayFaceTaskSon);

    /**
     * 通过主任务id查子任务
     */
    List<AyFaceTaskSon> selectByFaceTaskId(Integer id);


    /**
     * 发送新增子任务kafka消息
     */
    void insertFaceTaskSonKafkaOpMsg(TaskRequestDto taskRequestDto);

    /**
     * 发送删除子任务kafka消息
     */
    void deleteFaceTaskSonKafkaOpMsg(String taskId);

    /**
     * 更新主任务状态
     *
     * @param structureTaskId
     */
    void updateTaskStatus(Integer structureTaskId);

    /**
     * 判断所有子任务的主任务id是否相等
     *
     * @param ayFaceTaskSons
     * @return
     */
    Integer getFaceTaskId(List<AyFaceTaskSon> ayFaceTaskSons);
}
